package com.t.bricks.bussiness.service.coupon;

import java.math.BigDecimal;
import java.util.List;

import com.t.bricks.bussiness.model.coupon.AddInfo;
import com.t.bricks.bussiness.model.coupon.ConditionCoupon;
import com.t.bricks.model.MsgEmity;
import com.t.bricks.model.OrderInfoList;
import com.t.bricks.model.Page;

/**
 * 优惠卷Coupon表基本业务操作类接口定义
 */
public interface CouponService {
	
	/**
	 * 批量添加
	 * @Param addInfo 批量添加信息实体
	 * @return MsgEmity
	 */
	MsgEmity adds(AddInfo addInfo);

	/**
	 * 删除
	 * 注:只能删除未被领取的数据
	 * @Param uId 记录编号
	 * @Param iVersion 数据版本号
	 * @return MsgEmity
	 */
	MsgEmity del(String uId, Integer iVersion);
	
	/**
	 * 根据记录编号取对象
	 * @param uId 记录编号
	 * @return MsgEmity
	 */
	MsgEmity findById(String uId);

	/**
	 * 根据字段名取指定记录编号的数据库表中对应字段的值
	 * @param uId 记录编号
	 * @param fieldNames 待取数据的字段名称集合
	 * @return MsgEmity 返回内容data中存放的是Map
	 */
	MsgEmity getValueByFieldName(String uId, List<String> fieldNames);

	/**
	 * 查询分页
	 * @param page 分页信息对象
	 * @param orders 排序数据集合
	 * @param sLikeStr 全文检索
	 * @param condition 查询条件对象
	 * @return MsgEmity
	 */
	MsgEmity findByPage(Page page, OrderInfoList orders, String sLikeStr,
			ConditionCoupon condition);

	/**
	 * 根据记录编号查询符合分页数据的某条记录
	 * @param uId 记录编号 记录编号
	 * @return MsgEmity
	 */
	MsgEmity findByPageRow(String uId);

	/**
	 * 创建Excel文件内容
	 * @param orders 排序数据集合
	 * @param sLikeStr 全文检索
	 * @param condition 查询条件对象
	 * @return MsgEmity 返回结构中data为创建的经过压缩的Excel内容,接收端需要进行解压,msg为文件名
	 */
	MsgEmity export(OrderInfoList orders, String sLikeStr, ConditionCoupon condition);

	//----------------------------- 自动生成代码结束 ---------------------------//

	/**
	 * 批量删除数据
	 * 注:只能删除未被领取的数据
	 * @param sType 分类
	 * @param sWaresType 限制商品分类
	 * @return int
	 */
	MsgEmity dels(String sType, String sWaresType);

	/**
	 * 占用(一张)
	 * @param sType 分类
	 * @param mPrice 金额
	 * @param sCustomerId 客户编号
	 * @return
	 */
	MsgEmity employ(String sType, BigDecimal mPrice);

	/**
	 * 按编号占用
	 * @param uId 记录编号
	 * @param iVersion 当前版本号
	 * @return
	 */
	MsgEmity employById(String uId, Integer iVersion);
	
	/**
	 * 将过期数据更新状态
	 * @return
	 */
	MsgEmity expire();
	
	/**
	 * 查询当前顾客所持优惠卷
	 * @param sType
	 * @param mPrice
	 * @param iState
	 * @return MsgEmity List<Coupon>
	 */
	MsgEmity findByCustomer(String sType, BigDecimal mPrice, Integer iState);
	
}
